
package sclibrary.componente;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import sclibrary.evento.Evento;

public abstract class ConfiguradorAbstrato implements ConfiguradorComponente {
	public void registrarEventoMouse(final Evento evento) {
		getComponente().addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				dispararEvento(evento);
			}
		});
	}

	public void registrarEventoMouseDuploClique(final Evento evento) {
		getComponente().addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (e.getClickCount() == 2) {
					dispararEvento(evento);
				}
			}
		});
	}

	public void registrarEventoTeclaDigitada(final Evento evento) {
		getComponente().addKeyListener(new KeyAdapter() {
			@Override
			public void keyTyped(KeyEvent e) {
				if (evento.getTecla() == e.getKeyCode()) {
					dispararEvento(evento);
				}
			}
		});
	}

	public void registrarEventoTeclaLiberada(final Evento evento) {
		getComponente().addKeyListener(new KeyAdapter() {
			@Override
			public void keyReleased(KeyEvent e) {
				if (evento.getTecla() == e.getKeyCode()) {
					dispararEvento(evento);
				}
			}
		});
	}

	public void registrarEventoTeclaPressionada(final Evento evento) {
		getComponente().addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				if (evento.getTecla() == e.getKeyCode()) {
					dispararEvento(evento);
				}
			}
		});
	}

	private void dispararEvento(final Evento evento) {
		evento.getAcao().eventoAconteceu(ConfiguradorAbstrato.this);
	}
}
